﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.Empresa;
using BOL;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using System.IO;
using BOL.Comun;

namespace UILGestion.Admin.Proyecto
{
    public partial class ProyectoVentaEditForm : System.Web.UI.Page
    {

        public ProyectoVentaEditForm()
        {
            bol = new ProyectoBL();
        }
        private ProyectoBL bol;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                     type.Value = (string)Request.QueryString["type"];
                     internalID.Value = (string)Request.QueryString["id"];
                     paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri ;
                     menuCtrl1.loadMenuSeguridad();
                     FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }


        private void Insert()
        {
              internalID.Value=bol.AddProyectoVenta(empresaDDL.SelectedValue.ToInt(),descripcionTXT.Text,
                                                    bitActivoCHK.Checked,
                                                    tipoActividadDDL.SelectedValue.ToInt(),
                                                    fechaInicioTXT.Text.ToDate().Value,
                                                    fechaFinTXT.Text.ToDate().Value,
                                                    comentarioTXT.Text,
                                                    emailTextBox.Text,
                                                    webTXT.Text,
                                                    distritoDDL.SelectedValue.ToInt(),direccionTXT.Text,referenciaTXT.Text,
                                                    numPartidaTXT.Text,
                                                    numTomoTXT.Text,
                                                    numFichaTXT.Text, 
                                                    numFojaTXT.Text, 
                                                    sedeTXT.Text,
                                                    areTXT.Text.ToDecimal().Value,
                                                    urbanizaiconTXT.Text,
                                                    tipoFinanciamientoDDL.SelectedValue.ToInt(),
                                                    programaDDL.SelectedValue.ToInt2(),
                                                    codigoFinanciamientoTXT.Text,
                                                    new DataSet()
                                                    ).ToString();

              }

        private void Update()
        {
            bol.UpdateProyectoVenta(empresaDDL.SelectedValue.ToInt(),internalID.Value.ToInt(),
                                    descripcionTXT.Text,
                                    bitActivoCHK.Checked,
                                    tipoActividadDDL.SelectedValue.ToInt(),
                                    fechaInicioTXT.Text.ToDate().Value,
                                    fechaFinTXT.Text.ToDate().Value,
                                    comentarioTXT.Text,
                                    emailTextBox.Text,
                                    webTXT.Text,
                                    distritoDDL.SelectedValue.ToInt(), direccionTXT.Text, referenciaTXT.Text,
                                    numPartidaTXT.Text,
                                                    numTomoTXT.Text,
                                                    numFichaTXT.Text,
                                                    numFojaTXT.Text,
                                                    sedeTXT.Text,
                                                    areTXT.Text.ToDecimal().Value,
                                                    urbanizaiconTXT.Text,
                                                    tipoFinanciamientoDDL.SelectedValue.ToInt(),
                                                    programaDDL.SelectedValue.ToInt2(),
                                                    codigoFinanciamientoTXT.Text,
                                                    idimagenTXT.Text.ToInt2(),
                                                    new DataSet()
                                                    );


            
        }

        protected void button(object sender, EventArgs e)
        {
            
            try
            {

                if ((sender as Button).ID ==saveBTN.ID)
                {

                    if (type.Value == "E")   { Update(); }
                    if (type.Value == "A")    {Insert(); }

                    Response.Redirect("~/Admin/Proyecto/ProyectoVentaReadForm.aspx?id={0}".Fmt(internalID.Value), true);
                    
                }
                if ((sender as Button).ID == cancelarBTN.ID)
                {
                    
                Response.Redirect(paginaAnt.Value, true);

                }
                if ((sender as Button).ID ==refreshBTN.ID)
                {
                    FormatForm();
                }


                if ((sender as Button).ID == addImagenBTN.ID)
                {

                    if (archivoFileLoad.HasFile)
                    {
                         ArchivoBL archivoBol = new ArchivoBL();

                         var archivo=archivoBol.AddProyectoImagen(archivoFileLoad, internalID.Value.ToInt());
                    
                        idimagenTXT.Text = archivo.idInternal.ToString();
                    }
                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }




        }
        private void ShowAllComboBox()
        {
                    tipoActividadDDL.DataValueField = "idInternal";
                    tipoActividadDDL.DataTextField = "descripcion";
            
                    departamentoDDL.DataTextField = "VC_NOMBRE";
                    departamentoDDL.DataValueField = "IN_ID_CIU";

                    provinciaDDL.DataTextField = "VC_NOMBRE";
                    provinciaDDL.DataValueField = "IN_ID_PRO";

                    distritoDDL.DataTextField = "VC_NOMBRE";
                    distritoDDL.DataValueField = "IN_ID_DIS";


                    tipoFinanciamientoDDL.DataTextField = "descripcion";
                    tipoFinanciamientoDDL.DataValueField="idInternal";

                    programaDDL.DataTextField = "descripcion";
                    programaDDL.DataValueField = "idInternal";
                    
                    empresaDDL.DataTextField = "descripcion";
                    empresaDDL.DataValueField = "idInternal";

                    empresaDDL.DataSource = DbUtil.Db.Empresas;
                    empresaDDL.DataBind();
            

                    tipoFinanciamientoDDL.DataSource = DbUtil.Db.FinanciamientoViviendas.ToList();
                    tipoFinanciamientoDDL.DataBind();

                    programaDDL.DataSource = DbUtil.Db.GrupoDatoitems.Where(p => p.idGrupo == 17).ToList();
                    programaDDL.DataBind();


                    tipoActividadDDL.DataSource = new ListValueBL().GetProyectoTipo(2);
                    tipoActividadDDL.DataBind();

                    departamentoDDL.DataSource = DbUtil.Db.Ciudades.ToList();
                    departamentoDDL.DataBind();
            
            
                    if (type.Value == "A")
                    {
                        //carga provincia y distrito
                        provinciaDDL.DataSource=DbUtil.Db.Provincias.Where(p=>p.IN_ID_CIU==departamentoDDL.SelectedValue.ToInt());
                        provinciaDDL.DataBind();

                        distritoDDL.DataSource = DbUtil.Db.Distritos.Where(p => p.IN_ID_PRO == provinciaDDL.SelectedValue.ToInt());
                        distritoDDL.DataBind();

                        MostrarPrograma(tipoFinanciamientoDDL.SelectedValue.ToInt());
                    }
                    
                    
                    


        }

        private void MostrarPrograma(int idTipoFinanciamiento)
        {
            if (idTipoFinanciamiento == 2)
            {
                programaPNL.Visible = true;
            }
            else
            {
                programaPNL.Visible = false;
            }
            
            programaUPNL.Update();
        }

        private void Load()
        {
            DAL.Proyecto proyecto = DbUtil.Db.Proyectos.Single(p => p.idInternal == internalID.Value.ToInt());

            codigoTXT.Text = proyecto.codigo;
            descripcionTXT.Text = proyecto.descripcion;
            numPartidaTXT.Text = proyecto.numPartida;
            numFichaTXT.Text = proyecto.numPartida;
            numFojaTXT.Text = proyecto.numFoja;
            numTomoTXT.Text = proyecto.numTomo;
            sedeTXT.Text = proyecto.sede;
            areTXT.Text = proyecto.area.ToString();
            emailTextBox.Text = proyecto.email;
            webTXT.Text = proyecto.web;
            fechaInicioTXT.Text = proyecto.fechaInicio.Value.ToShortDateString();
            fechaFinTXT.Text = proyecto.fechaFin.Value.ToShortDateString();
            comentarioTXT.Text = proyecto.observacion;
            bitActivoCHK.Checked = proyecto.bitActivo;
            urbanizaiconTXT.Text = proyecto.urbanizacion;
            empresaDDL.SelectedValue = proyecto.idEmpresa.ToString();
            tipoActividadDDL.SelectedValue = proyecto.idActividad.ToString();
            direccionTXT.Text = proyecto.direccion;
            referenciaTXT.Text = proyecto.referencia;
            int idProvincia=proyecto.Distrito.IN_ID_PRO;
            int idDepartamento=proyecto.Distrito.Provincia.IN_ID_CIU;
            tipoFinanciamientoDDL.SelectedValue = proyecto.idTipoFinanciamiento.ToString();
            

            //para la carga del ubigeo
                provinciaDDL.DataSource=DbUtil.Db.Provincias.Where(p=>p.IN_ID_CIU==idDepartamento);
                provinciaDDL.DataBind();

                departamentoDDL.DataSource=DbUtil.Db.Ciudades;
                departamentoDDL.DataBind();

                distritoDDL.DataSource=DbUtil.Db.Distritos.Where(p=>p.IN_ID_PRO==idProvincia);
                distritoDDL.DataBind();


                distritoDDL.SelectedValue = proyecto.idDistrito.ToString();
                provinciaDDL.SelectedValue = idProvincia.ToString();
                departamentoDDL.SelectedValue = idDepartamento.ToString();

                MostrarPrograma(proyecto.idTipoFinanciamiento.Value);

                if (proyecto.idArchivo != null)
                {
                    idimagenTXT.Text = proyecto.idArchivo.ToString();

                }

        }

        private void FormatForm()
        {

            //--------------------
            //int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
            //    idEmpleadoEmisor,
            //    11, //Proveeedor
            //    2); //lectura
            ////------------------------- 
            //// los paneles presentes en el formulario
            //pnlMain.Visible = true;
            ShowAllComboBox();
            fechaInicioTXT.Text = DateTime.Now.ToShortDateString();
            fechaFinTXT.Text = DateTime.Now.ToShortDateString();
            areTXT.Text = "0";

            if (type.Value == "E")
            {
                Load();
                codigoTXT.Enabled = false;
            }
            if (type.Value == "A")
            {
                codigoTXT.Text = new DAL.Proyecto().getCorrelativo(DbUtil.Db, 48);
                codigoTXT.Enabled = false;
                bitActivoCHK.Checked = true;
                //solo puede agregar  imagen  si ya fue registrado
                idimagenTXT.Visible=true;
                addImagenBTN.Visible=false;
                archivoFileLoad.Visible=false;

            }
        
        
           

        }

        protected void comboBox(object sender, EventArgs e)
        {
            try
            {
                if (((DropDownList)sender).ID == departamentoDDL.ID)
                {
                    int? idDepartamento = departamentoDDL.SelectedValue.ToInt2();
                    provinciaDDL.DataSource = DbUtil.Db.Provincias.Where(p=>p.IN_ID_CIU==idDepartamento.Value);
                    provinciaDDL.DataBind();
                    int? idProyecto = provinciaDDL.SelectedValue.ToInt2();
                    distritoDDL.DataSource = DbUtil.Db.Distritos.Where(p => p.IN_ID_PRO == idProyecto);
                    distritoDDL.DataBind();
                    ubigeoUP.Update();

                }
                if (((DropDownList)sender).ID == provinciaDDL.ID)
                {
                    int?  idProyecto=provinciaDDL.SelectedValue.ToInt2();
                    distritoDDL.DataSource = DbUtil.Db.Distritos.Where(p=>p.IN_ID_PRO==idProyecto);
                    distritoDDL.DataBind();
                    ubigeoUP.Update();
                }
                if (((DropDownList)sender).ID == tipoFinanciamientoDDL.ID)
                {
                    int tipoFin= tipoFinanciamientoDDL.SelectedValue.ToInt();
                    MostrarPrograma(tipoFin);
                }
               
                

                
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

       

        
       
    }
}